#include<stdio.h>
#include<stdlib.h>
#include<pthread.h>
#include<unistd.h>

//子线程入口函数
void *pthread_fun(void *arg)
{
    printf("---------------\n");
    printf("子线程正在执行\n");
    static int i = 0;
    for(;i < 3;i++)
    {
        sleep(1);
        printf("子线程执行%ds\n",i+1);
    }
    printf("子线程即将退出\n");
    return (void*)&i;
}

int main()
{
    printf("父线程正在执行\n");
    pthread_t pt_id;
    //创建子线程
    if(pthread_create(&pt_id,NULL,&pthread_fun,NULL) == -1)
    {
        perror("fail to pthread");
        exit(-1);
    }
    
    #if 0
    //调用pthread_join()函数
    //阻塞等待一个子线程pt_id结束，并回收子线程资源
    int *t;
    if(pthread_join(pt_id,(void**)&t) != 0)
    {
        perror("fail to pthread_join");
        exit(-1);
    }
    printf("子线程共运行%ds\n",*t);
    printf("进程即将退出\n");
    #endif

    #if 1
    //调用pthread_detach()函数
    //使线程pt_id与当前进程分离，成为独立线程
    if(pthread_detach(pt_id) != 0)
    {
        perror("fail to pthread_detach");
        exit(-1);
    }
    int j = 1;
    while(1)
    {
        sleep(1);
        printf("进程执行%ds\n",j++);
    }
    #endif

    return 0;
}